%%
%% @file
%% @author Sourabh Daptardar <saurabh.daptardar@gmail.com>
%% @version 1.0
%%
%% @section LICENSE
%% This file is part of SerrePoggioClassifier.
%% 
%% SerrePoggioClassifier is free software: you can redistribute it and/or modify
%% it under the terms of the GNU General Public License as published by
%% the Free Software Foundation, either version 3 of the License, or
%% (at your option) any later version.
%% 
%% SerrePoggioClassifier is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%% GNU General Public License for more details.
%% 
%% You should have received a copy of the GNU General Public License
%% along with SerrePoggioClassifier.  If not, see <http://www.gnu.org/licenses/>.
%%
%% @section DESCRIPTION
%% This code has been developed in partial fulfillment of the M.Tech thesis
%% "Explorations on a neurologically plausible model of image object classification"
%% by Sourabh Daptardar, Y7111009, CSE, IIT Kanpur.
%%
%% This code implements normalized graph cut clustering technique.
%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%N = 10;
%W = 0.7 * eye(N,N) + 0.3 * ones(N,N);
%W(1,2) = W(2,1) = 0.75;
%W(2,3) = W(3,2) = 0.75;
%W(3,1) = W(1,3) = 0.75;
%W(9,7) = W(7,9) = 0.75;
%W(7,8) = W(8,7) = 0.75;
%W(8,9) = W(9,8) = 0.75;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
global CLUSTERSTRENGTH_THRESHOLD = 0.5 
global CUTSTRENGTH_THRESHOLD = 0.09
global MINCLUSTERSIZE = 1
%global MAXCLUSTERSIZE = 48  % for jaguar
global MAXCLUSTERSIZE = 15   % for paris
global NUMCUTPOINTINTERVALS = 20
global SMALLCLUSTERSIZE = 5;
global SPLITRATIO_THRESHOLD = 0.7;
global MERGE_THRESHOLD = 1e-5;
global TOLERANCE = 0;
global clusters = {};
global heapordering = {};
global HINTVL = 1e-4
global NBINS = 20
%global keyfile = "/mnt/output/PulsarOutput/key/train.key"
%global query = "Pulsar";
%global keyfile = "/mnt/output/JaguarOutput/key/train.key"
%global query = "Jaguar";
%global NDIM = 976;
%global c2file = "../MinCut/train_sorted.c2";
global query = "Paris";
global keyfile = "/mnt/output/ParisOutput2/key/train.key"
global NDIM = 960;
global c2file = "/mnt/output/ParisOutput2/c2/paris.c2";
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function cutval = ncutval(W,P)
	N = size(W,1);
	cut = 0;
	for i = i:N
		for j = 1:i-1
			if (P(i) != P(j))
				cut += W(i,j);
			endif;
		endfor;
	endfor;

	%printf("Cut =%f\n",cut);
	sum_w = sum(W) - ones(1,N);

	suma = 0 ; sumb = 0 ;
	for i = 1:N
		if ( P(i) == 0 )
			suma += sum_w(i);
		else
			sumb += sum_w(i);
		endif;
	endfor;

	%printf("suma = %f sumb = %f \n",suma,sumb);
	cutval = cut * ( 1.0 / suma + 1.0 / sumb);

endfunction


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% W ==> adjacency matrix
%% p ==> partition
%% M ==> adjacency matrix of the subgraph selected
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function M = selector(W,p)
	n2 = size(p,2);
	n2; 
	for i = 1:n2
		for j = 1:n2
			M(i,j) = W(p(i),p(j));
		endfor;
	endfor;

endfunction

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function sval = clstrength(Adj,P)
	M = selector(Adj,P);
	n = size(P,2);
	sval = sum(sum(M)) / (n*n) ; 
endfunction

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                  Distance Functions
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%function hval = hausdorff(Adj,X,Y)
%function hval = dist(Adj,X,Y)
%	m = size(X,2);
%	n = size(Y,2);
%	maxmindist1 = -Inf;
%	for i = 1:m
%		mindist1 = Inf;
%		for j = 1:n
%			d = -1.0 * log(Adj(X(1,i),Y(1,j)));
%			if( d < mindist1)
%				mindist1 = d;
%			endif
%		endfor;
%		if( mindist1 > maxmindist1)
%			maxmindist1 = mindist1;
%		endif;
%	endfor;
%	maxmindist2 = -Inf;
%	for i = 1:n
%	mindist2 = Inf;
%	for j = 1:m
%		d = -1.0 * log(Adj(Y(1,i),X(1,j)));
%		if( d < mindist2)
%			mindist2 = d;
%		endif
%	endfor;
%	if( mindist2 > maxmindist2)
%		maxmindist2 = mindist2;
%	endif;
%	endfor;
%
%	if( mindist1 > mindist2 )
%		hval = mindist1;
%	else
%		hval = mindist2;
%	endif
%
%endfunction	

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%function hval = dist(Adj,X,Y)
%	m = size(X,2);
%	n = size(Y,2);
%	avg  = 0.0;
%	for i = 1:m
%		for j = 1:n
%			d = -1.0 * log(Adj(X(1,i),Y(1,j)));
%			avg = avg + d;
%		endfor;
%	endfor;
%	avg = avg / (m*n);
%	hval = avg;
%	
%endfunction
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function hval = dist(Adj,X,Y)
	m = size(X,2);
	n = size(Y,2);
	avg  = 0.0;
	for i = 1:m
		for j = 1:n
			d = -1.0 * log(Adj(X(1,i),Y(1,j)));
			avg = avg + d;
		endfor;
	endfor;
	avg = avg / (m*n);
	hval = avg;
	
endfunction

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%function hval = dist(Adj,X,Y)
%	m = size(X,2);
%	n = size(Y,2);
%	A = [];
%	A(1:m) = X(:,:);
%	sz = m+n;
%	A(m+1:sz) = Y(:,:);
%	M  = selector(Adj,A);
%	avg  = 0.0;
%	for i = 1:sz
%		for j = 1:i-1
%			d = -1.0 * log(M(i,j));
%			avg = avg + d;
%		endfor;
%	endfor;
%	s = sz * (sz-1) / 2.0;
%	avg = avg / s;
%	hval = avg;
%	
%endfunction
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function hval = dist2(V,X,Y)
global NDIM;
m = size(X,2);
n = size(Y,2);
hval = 0;
C1 = zeros(1,NDIM);
for i = 1:m
	C1 = C1 + cell2mat(V(X(i)));
endfor
C1 = C1 / m;

C2 = zeros(1,NDIM);
for i = 1:n
	C2 = C2 + cell2mat(V(Y(i)));
endfor
C2 = C2 / n;

A = C1 - C2;
hval = 0;
for i = 1:NDIM
	hval += (A(i)*A(i));
endfor	
hval = sqrt(hval);

endfunction

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function cutstr = getcutstrength(Adj,X,Y)
	m = size(X,2);
	n = size(Y,2);
	cutstr = 0.0;
	for i = 1:m
		for j = 1:n
			cutstr = cutstr + Adj(X(1,i),Y(1,j));
		endfor;
	endfor;
	A = [];
	A = X(:,:);
	A(m+1:m+n) = Y(:,:); 
    W = selector(Adj,A);	
	s = sum(sum(W));
	cutstr = cutstr / s;	
endfunction	
	
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [c1,c2] = getsplitratio(Adj,idlist)
	m = size(idlist,2);
	%printf('\nSimilarity %d: ',m);
	maxmins = -Inf;
	minmins = Inf;
	maxmaxs = -Inf;
	minmaxs = Inf;
	for i = 1:m
		mins = Inf;
		maxs = -Inf;
		for j = 1:m
			if( i != j )
				w = Adj(idlist(1,i),idlist(1,j));
				if( w < mins )
					mins = w;
				endif
				if( w > maxs )
					maxs = w;
				endif
			endif
		endfor;
		
		if( mins > maxmins )
			maxmins = mins;
		endif
		if( mins < minmins )
			minmins = mins;
		endif
		if( maxs > maxmaxs )
			maxmaxs = maxs;
		endif
		if( maxs < minmaxs )
			minmaxs = maxs;
		endif


	endfor;
	%printf('%-6.4f %-6.4f %-6.4f',minmins,maxmins, minmins/maxmins);
	%printf('\n');
	mindist = -1.0*log(maxmaxs);
	maxdist = -1.0*log(minmins);
		 d1 = -1.0*log(maxmins);
	c1 = mindist/maxdist;
	c2 = d1 / maxdist;
endfunction

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function cl = mergecells(clusters,i,j,heapordering)
	mat1 = cell2mat(clusters(1,i));
	mat2 = cell2mat(clusters(1,j));
	m = size(mat1,2);
	n = size(mat2,2);
	mat = [];
	mat = mat1(:,:);
	mat(m+1:m+n) = mat2(:,:); 
	
	if( cell2mat(heapordering(i)) < cell2mat(heapordering(j)) )
		mini = i;
		maxi = j;
	else
		maxi = i;
		mini = j;
	endif
	clusters(:,mini) = mat2cell(mat,1,m+n);
	clusters(:,maxi) = [];
	cl = clusters;

endfunction	

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function showmatrices(Adj,h,e)
global MERGE_THRESHOLD;

sz = size(h,2);

for i = 1:sz
	printf('%4d ::',i);
	for j = 1:sz
		printf('%-8.4f ',h(i,j));
	endfor
	printf('\n');
endfor

printf('     ::',i);
for i = 1:sz
	printf('%4d ',i);
endfor
printf('\n');
for i = 1:sz
	printf('%4d ::',i);
	for j = 1:sz
		printf('%4d ',e(i,j));
	endfor
	printf('\n');
endfor
endfunction

function [h,e] = calcdist(Adj,clusters,V)
global MERGE_THRESHOLD;
global SMALLCLUSTERSIZE;
global TOLERANCE;
global MAXCLUSTERSIZE;

sz = size(clusters,2);

%for i = 1:sz
%	h(i,i) = 1;
%endfor

h = zeros(sz,sz);

for i = 1:sz
	for j = 1:i-1
		s1 = size(cell2mat(clusters(1,i)),2);
		s2 = size(cell2mat(clusters(1,j)),2);
		if( s1 <= SMALLCLUSTERSIZE && s2 > SMALLCLUSTERSIZE )
			t1 = j;
			t2 = i;
		endif
		if( s1 > SMALLCLUSTERSIZE  && s2 <= SMALLCLUSTERSIZE ) 
			t1 = i;
			t2 = j;
		endif
		if( (s1 <= SMALLCLUSTERSIZE && s2 > SMALLCLUSTERSIZE) || (s1 > SMALLCLUSTERSIZE  && s2 <= SMALLCLUSTERSIZE) )
			%h(t1,t2) = h(t2,t1) = exp(-1.0 * dist(Adj,cell2mat(clusters(1,i)),cell2mat(clusters(1,j))));
			h(t1,t2) = h(t2,t1) = exp(-1.0 * dist2(V,cell2mat(clusters(1,i)),cell2mat(clusters(1,j))));
		endif
	endfor
endfor

clusters
h

for i = 1:sz
	s1 = size(cell2mat(clusters(1,i)),2);
	maxj(i) = 0;
	if( s1 <= SMALLCLUSTERSIZE )
		maxs = -Inf;
		for j = 1:sz
			s2 = size(cell2mat(clusters(1,j)),2);
			if( (s2 > SMALLCLUSTERSIZE) && (h(i,j) > maxs) )
				maxs = h(i,j);
				maxj(i) = j;
			endif	
		endfor
	else
		maxj(i) = 0;
	endif
endfor

e = zeros(sz,sz);
for i = 1:sz
	l1 = size(cell2mat(clusters(1,i)),2);
	j = maxj(i);
	l2 = 0;
	d = 0;
	if( j > 0 )
		l2 = size(cell2mat(clusters(1,j)),2);
		d = h(i,j);
	endif
	printf('%4d %4d %-6.4f\n',i,j,d);
	mergelen = l1 + l2;
	mergelenthr = MAXCLUSTERSIZE + TOLERANCE;
	if( (j > 0) && (mergelen <= mergelenthr) && (d > MERGE_THRESHOLD) )
		e(i,j) = 1;
	endif
endfor

endfunction

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function clstr = merge(Adj,clusters,heapordering)
global MERGE_THRESHOLD;
global NDIM;
global c2file;

V = loadvectors(c2file,NDIM);
[h,e] = calcdist(Adj,clusters,V);
showmatrices(Adj,h,e);

do
	flag = 0;
	%% Check if clusters can be merged
	sz = size(clusters,2);
	for i = 1:sz
		for j = 1:sz
			if( e(i,j) == 1)
				flag = 1;
				break;
			endif
		endfor
		if( flag == 1 )
				break;
		endif
	endfor

	%% If yes merge them
	if( flag == 1 )
		clusters = mergecells(clusters,i,j,heapordering);
		%% Recalculate
		[h,e] = calcdist(Adj,clusters,V);
		showmatrices(Adj,h,e);

		% Recheck
		flag = 0;
		sz = size(clusters,2);
		for i = 1:sz
			for j = 1:sz
				if( e(i,j) == 1)
					flag = 1;
					break;
				endif
			endfor
			if( flag == 1 )
					break;
			endif
		endfor
	endif

until ( flag == 0 )

clstr = clusters;

endfunction


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% W => adjacency matrix
%% idlist => list of Ids,
%% l => number of splitting points for cut

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [cutstrength,p1,p2] = ncut(Adj,W,idlist,childnum)
persistent pcounter = 0;
global clusters;
global heapordering;
global NUMCUTPOINTINTERVALS;
global CLUSTERSTRENGTH_THRESHOLD;
global CUTSTRENGTH_THRESHOLD;
global SPLITRATIO_THRESHOLD;
global MINCLUSTERSIZE;
global MAXCLUSTERSIZE;
global HINTVL;
global NBINS;
global query;
persistent nelem = 0;
flag = 1;  %% Octave has problems with nested-if ... therefore flag variable is used

N = size(W,1);

if( N <= MINCLUSTERSIZE )
	%% Do not split
	clstr = clstrength(Adj,idlist);
	++pcounter;
	clusters(pcounter) = idlist;
	heapordering(1,pcounter) = childnum;
	cutstrength = -1;
	sratio = -1;
	printf('Size    : %d :: %f %f %f : %d\n',childnum,clstr,cutstrength,sratio,N);
	flag = 0;
	p1 = [];
	p2 = [];
endif

clstr = clstrength(Adj,idlist);
if( flag == 1 && clstr >= CLUSTERSTRENGTH_THRESHOLD )
	%% Do not split
	++pcounter;
	clusters(pcounter) = idlist;
	heapordering(1,pcounter) = childnum;
	cutstrength = -1;
	sratio = -1;
	printf('ClStr   : %d :: %f %f %f : %d\n',childnum,clstr,cutstrength,sratio,N);
	flag = 0;
	p1 = [];
	p2 = [];
endif


[c1,c2] = getsplitratio(Adj,idlist);
if( flag == 1 && c1 > SPLITRATIO_THRESHOLD )
	%% Do not split
	++pcounter;
	clusters(pcounter) = idlist;
	heapordering(1,pcounter) = childnum;
	cutstrength = -1;
	sratio = -1;
	printf('SpRatio1  : %d :: %f %f %f : %d : %-6.4f\n',childnum,clstr,cutstrength,sratio,N,c1);
	flag = 0;
	p1 = [];
	p2 = [];
endif


if( flag == 1 )

	clstr = clstrength(Adj,idlist);
	N = size(W,1);
	sumw = sum(W);

	D = eye(N,N);
	for i = 1:N
		D(i,i) = sumw(i) - D(i,i);
	endfor

	dinvsq = inv(sqrt(D));

	A = dinvsq * (D-W) * dinvsq;
	[V,LAMBDA] = eig(A);

	min = Inf; min_idx = 0;
	secmin = Inf ; secmin_idx = 0;

	eigval = diag(LAMBDA);

	for i = 1:N
		if ( eigval(i) < secmin )
			secmin = eigval(i);
			secmin_idx = i;
			if ( secmin < min )
				t      = min;
				min    = secmin;
				secmin = t;
				t2         = min_idx;
				min_idx    = secmin_idx;
				secmin_idx = t2;
			endif
		endif

	endfor;

	%min
	%min_idx
	%secmin
	%secmin_idx
	%eigval

	y = V(:,secmin_idx);

	maxval = -Inf; minval = Inf;
	for i = 1:N
		if ( y(i) > maxval )
			maxval = y(i);
		endif

		if ( y(i) < minval )
			minval = y(i);
		endif

	endfor;

	range = maxval - minval;
	incr  = range / NUMCUTPOINTINTERVALS;
	start = minval + incr;
	endv   = maxval - incr;

	minncut = Inf;

	for splitpt = start:incr:endv
		for i = 1:N
			if y(i) < splitpt
				P(i) = 0;
			else
				P(i) = 1;
			endif;
		endfor;
		cval = ncutval(W,P);
		if ( cval < minncut )
			minncut = cval;
			minP = P;
		endif;
		%printf("%f :: %f \n" ,splitpt, ncutval(W,P)); 
		%P
		%cutval = ncutval(W,P)
		%printf("\n");
	endfor;

	cntp1 = 0; cntp2 = 0;
	for i = 1:N
		if (minP(i) == 0 )
			cntp1 = cntp1 + 1;
			p1(cntp1) = idlist(i);
		else
			cntp2 = cntp2 + 1;
			p2(cntp2) = idlist(i);
		endif;
	endfor;

	%ssum = sum(sumw);
	%ssum = sum(sum(Adj));
	ssum = 1.0;

	%cutstrength = minncut / ssum;
	s1 = size(p1,2);
	s2 = size(p2,2);


	%%% Criteria of Shi-Tomasi
	for i = 1:N
		yy(i) = ceil(NBINS *(y(i) - minval) / range); 
		yy2(i)= (y(i) - minval) / HINTVL;
	endfor;

	yyy = sort(yy);
	mincount = NBINS;
	maxcount = 1;
	count = 1;
	bcount = 1;
	for i = 2:N
		if( yyy(i) == yyy(i-1) )
			count = count + 1;
			bcount = bcount + 1; 
		else
			count = 1;
		endif;
		
		if( count < mincount )
			mincount = count;
		endif;

		if( count > maxcount )
			maxcount = count;
		endif;

	endfor;

	sratio = double(mincount) / double(maxcount); 
    [c1,c2] = getsplitratio(Adj,idlist);
	clstr = clstrength(Adj,idlist);
	cutstrength = getcutstrength(Adj,p1,p2);

	if( N <= MAXCLUSTERSIZE && cutstrength > CUTSTRENGTH_THRESHOLD )
		%% Discard the split
		++pcounter;
		clusters(pcounter) = idlist;
		heapordering(1,pcounter) = childnum;
		flag = 0;
		printf('CutStr  : %d :: %f %f %f : %d : %-6.4f %-6.4f\n',childnum,clstr,cutstrength,sratio,s1+s2,c1,c2);
	else
		%% Recurse on the splits obtained
		printf('NonLeaf : %d :: %f %f %f : %d : %-6.4f %-6.4f\n',childnum,clstr,cutstrength,sratio,s1+s2,c1,c2);
		M1 = selector(Adj,p1);
		ncut(Adj,M1,p1,2*childnum+1);
		M2 = selector(Adj,p2);
		ncut(Adj,M2,p2,2*childnum+2);
	endif

endif;


endfunction


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
W =  [1,0.0107483,0.0128365,0.0114446,0.0146686,0.0120538,0.0117535,0.0200623,0.0095105,0.0203797,0.0219739,0.02742,0.0148071,0.00930204,0.0203552,0.0277455,0.0249287,0.0179522,0.0205305,0.020523,0.0143299,0.113309,0.0123591,0.0313693,0.029549,0.0294889,0.020804,0.0300767,0.023629,0.0124575,0.025074,0.0221062,0.0133523,0.0216031,0.0339876,0.0112186,0.00916221,0.0155531,0.0144371,0.0144809,0.00970853,0.114564,0.035652,0.0145464,0.00904024,0.0336249,0.0181413,0.0168367,0.0210589,0.0169059,0.03133,0.0186357,0.0212059,0.0213519,0.0166733,0.0177337,0.026178,0.0180057,0.0136806,0.0218217,0.0251366;0.0107483,1,0.0602447,0.0963854,0.0449801,0.153856,0.108959,0.0750941,0.0333977,0.0207005,0.0581837,0.0661507,0.142865,0.164689,0.0686252,0.0315053,0.0541332,0.0601365,0.0868743,0.0732761,0.0565831,0.00756431,0.165414,0.0279467,0.0813012,0.0199139,0.0912366,0.0261084,0.0546251,0.115869,0.0744724,0.0472286,0.0455204,0.0777474,0.0338809,0.0933401,0.0988288,0.121074,0.0873949,0.153669,0.105537,0.00765342,0.0238705,0.0653754,0.0779494,0.0295298,0.0513703,0.0370085,0.102424,0.0407812,0.0434001,0.0405279,0.0679574,0.0513194,0.0428353,0.0942064,0.0828343,0.0503716,0.0657574,0.0447288,0.0307952;0.0128365,0.0602447,1,0.0246926,0.0153735,0.0500527,0.0336737,0.143777,0.074685,0.0124999,0.0407071,0.0488521,0.0520183,0.0392838,0.113096,0.0399101,0.0873688,0.0619001,0.0864529,0.118951,0.0618834,0.00865702,0.0571861,0.02253,0.0742277,0.0173652,0.0392582,0.0281557,0.100913,0.0693841,0.0795782,0.0338185,0.0150099,0.0608411,0.0517931,0.142005,0.0475084,0.112304,0.100768,0.0546263,0.061198,0.00882495,0.0179619,0.0430097,0.0507675,0.0313114,0.0286855,0.0154512,0.0761644,0.0216821,0.0625971,0.0594582,0.103766,0.0581383,0.0310508,0.0850086,0.0950167,0.0882648,0.688407,0.0635133,0.0443579;0.0114446,0.0963854,0.0246926,1,0.10459,0.109596,0.123635,0.0369519,0.0176627,0.0277974,0.0472443,0.0609863,0.119026,0.0938255,0.030407,0.0212993,0.0329497,0.0443827,0.052911,0.037945,0.0332594,0.00893351,0.1136,0.0357859,0.0574694,0.0237087,0.0917295,0.0199221,0.0282897,0.0547073,0.0479199,0.044575,0.104961,0.0574852,0.0232014,0.035177,0.0643601,0.0477694,0.0428002,0.139248,0.0655726,0.00897286,0.0337297,0.047318,0.0514485,0.0237462,0.0777804,0.0736204,0.0694533,0.0582391,0.037847,0.0256053,0.0365783,0.0310638,0.0439906,0.0552713,0.0522958,0.0274995,0.0266884,0.0258631,0.0224713;0.0146686,0.0449801,0.0153735,0.10459,1,0.0525312,0.109995,0.0252302,0.013832,0.0344112,0.0367655,0.047549,0.0625571,0.0443301,0.0202522,0.0179576,0.0218135,0.0328809,0.0326853,0.0237817,0.0250419,0.0119241,0.053276,0.0387091,0.0395963,0.0328562,0.0634372,0.0186418,0.0203827,0.0265796,0.0361239,0.0373542,0.0913548,0.0448953,0.0196295,0.0198518,0.0319527,0.023331,0.024849,0.0655789,0.0351699,0.0118696,0.0424319,0.0325723,0.0338602,0.0238705,0.0697783,0.0783719,0.04832,0.0438018,0.0335016,0.0212387,0.0245689,0.0209343,0.0315106,0.0344046,0.036149,0.0184933,0.0165715,0.0202248,0.0194178;0.0120538,0.153856,0.0500527,0.109596,0.0525312,1,0.124522,0.0602682,0.0272496,0.0192686,0.0587946,0.0663171,0.156271,0.15986,0.0643545,0.0293347,0.0616111,0.0557757,0.0882203,0.0720677,0.0500271,0.00906024,0.188981,0.0320071,0.0908642,0.0172531,0.123039,0.0253305,0.0464397,0.0972388,0.0729227,0.0492991,0.0522867,0.0791091,0.0306442,0.0789941,0.108184,0.120826,0.089285,0.158883,0.0994279,0.00916484,0.0272692,0.079427,0.0666114,0.0274789,0.0609454,0.0515209,0.0919604,0.0612251,0.0434846,0.0358524,0.0662057,0.0522407,0.0509706,0.0893174,0.0784159,0.0452223,0.0543503,0.0385959,0.0293096;0.0117535,0.108959,0.0336737,0.123635,0.109995,0.124522,1,0.0438232,0.0224932,0.0237766,0.0553729,0.0669539,0.121005,0.106139,0.0380447,0.0227346,0.0399623,0.0555326,0.0644805,0.0460707,0.043873,0.00913238,0.118729,0.0336034,0.0599102,0.0223252,0.0933961,0.0210828,0.0327555,0.0661203,0.0577082,0.0500844,0.065497,0.0729107,0.0246179,0.0497476,0.0705408,0.0602641,0.0584315,0.131154,0.0753354,0.00918086,0.0309771,0.0586722,0.065506,0.0264851,0.0717745,0.0626677,0.0919617,0.0532484,0.0392321,0.0344205,0.0441984,0.0345669,0.0462611,0.0644259,0.0591432,0.0323764,0.0364875,0.0288318,0.0238579;0.0200623,0.0750941,0.143777,0.0369519,0.0252302,0.0602682,0.0438232,1,0.0443006,0.0197695,0.076087,0.0742227,0.0666727,0.0473923,0.134473,0.0653016,0.0938353,0.0832009,0.101522,0.110152,0.0703534,0.014071,0.0793658,0.040857,0.104609,0.0296928,0.0592743,0.047117,0.152167,0.108409,0.122588,0.0631856,0.024555,0.0935243,0.0833692,0.111952,0.0523511,0.126355,0.108911,0.082547,0.0549974,0.0142638,0.0312694,0.0511638,0.0387675,0.0513533,0.0450369,0.0279192,0.0933818,0.0378192,0.118155,0.0654505,0.156534,0.0833176,0.0528569,0.116089,0.213752,0.174258,0.155479,0.105418,0.0542011;0.0095105,0.0333977,0.074685,0.0176627,0.013832,0.0272496,0.0224932,0.0443006,1,0.0115538,0.0159403,0.0283582,0.0360583,0.0202163,0.0496912,0.0179546,0.0411755,0.0238027,0.0324459,0.0592762,0.0298745,0.0060015,0.0296246,0.0158598,0.0371106,0.0176575,0.0223351,0.0145258,0.035566,0.0233683,0.0368365,0.0148742,0.0103449,0.0312711,0.0228951,0.055561,0.028336,0.0384385,0.0336583,0.0291061,0.0564407,0.00606363,0.0146823,0.0275483,0.0606964,0.0194773,0.0148453,0.00886842,0.0312879,0.00886844,0.0309692,0.0310336,0.0307048,0.0219838,0.0125012,0.0359743,0.0349112,0.0256949,0.0670824,0.0273236,0.0260226;0.0203797,0.0207005,0.0124999,0.0277974,0.0344112,0.0192686,0.0237766,0.0197695,0.0115538,1,0.0232144,0.033112,0.0258946,0.0175871,0.0179399,0.02014,0.0169892,0.0218265,0.0226967,0.0173746,0.0209047,0.0137789,0.0198131,0.0342198,0.0310558,0.0540288,0.0296813,0.0214998,0.021576,0.0163354,0.0332175,0.022851,0.0287095,0.0264769,0.0265212,0.0143684,0.0163264,0.0149571,0.0155239,0.0250605,0.0172895,0.0137252,0.0365651,0.0182028,0.0174307,0.0353393,0.0329407,0.0246501,0.0311806,0.0185101,0.0285046,0.0189727,0.0195005,0.016757,0.0203173,0.0230363,0.0275338,0.0158816,0.0135006,0.0200527,0.0200399;0.0219739,0.0581837,0.0407071,0.0472443,0.0367655,0.0587946,0.0553729,0.076087,0.0159403,0.0232144,1,0.0731226,0.0540972,0.0463168,0.0589355,0.0416957,0.0573869,0.079475,0.0760485,0.0576978,0.0491574,0.0170006,0.0758347,0.0397207,0.0764869,0.0237472,0.0727252,0.0368949,0.0572702,0.0775397,0.0773678,0.210365,0.034839,0.0875045,0.0448573,0.0511527,0.0392209,0.0624667,0.0642036,0.0759707,0.0325836,0.0171078,0.0417993,0.0443817,0.0266472,0.0518744,0.0699797,0.0529628,0.0890574,0.0701876,0.0590432,0.0521852,0.0722976,0.0530644,0.0734523,0.0763628,0.0907935,0.0635869,0.0451682,0.0524839,0.0333395;0.02742,0.0661507,0.0488521,0.0609863,0.047549,0.0663171,0.0669539,0.0742227,0.0283582,0.033112,0.0731226,1,0.0774229,0.0509297,0.0689378,0.0541115,0.0663923,0.0680947,0.0943214,0.0683407,0.0590019,0.0196253,0.0726661,0.0603477,0.0920776,0.0408941,0.0798465,0.0485508,0.0690308,0.0642408,0.0950727,0.0676025,0.0450272,0.0949476,0.0581078,0.0606644,0.0495116,0.0692123,0.063008,0.0922088,0.0558188,0.0197821,0.0486559,0.0547948,0.041997,0.0553208,0.0777118,0.0539761,0.102802,0.0565408,0.072538,0.0566369,0.0649669,0.0559231,0.0674234,0.0777699,0.0944129,0.0566721,0.0514531,0.0537001,0.0389475;0.0148071,0.142865,0.0520183,0.119026,0.0625571,0.156271,0.121005,0.0666727,0.0360583,0.0258946,0.0540972,0.0774229,1,0.128991,0.0578452,0.0288084,0.0525346,0.0547572,0.0750958,0.0713008,0.0511923,0.0105886,0.146716,0.0376131,0.0825505,0.0256936,0.115902,0.0256422,0.0474407,0.0784681,0.0707642,0.050373,0.0556584,0.0769215,0.0337454,0.0645624,0.102785,0.104283,0.0657295,0.191955,0.143067,0.0106602,0.0344462,0.0834051,0.0962422,0.0291341,0.056946,0.0461817,0.098896,0.0417778,0.051641,0.0358798,0.059221,0.0473631,0.0434188,0.0916772,0.0879908,0.0431318,0.0557159,0.039823,0.0343281;0.00930204,0.164689,0.0392838,0.0938255,0.0443301,0.15986,0.106139,0.0473923,0.0202163,0.0175871,0.0463168,0.0509297,0.128991,1,0.0441573,0.0224144,0.0412489,0.0457812,0.0635258,0.0487894,0.0417623,0.00690811,0.143126,0.0234841,0.0594128,0.015223,0.0845804,0.0192858,0.0356059,0.0835171,0.0541689,0.0388204,0.0496328,0.0568641,0.0257457,0.062818,0.0976281,0.0896563,0.0642066,0.130853,0.0781336,0.00697307,0.0206941,0.0569477,0.0568724,0.0203937,0.0487236,0.0427773,0.0801491,0.042913,0.0332365,0.0273728,0.0478024,0.0404096,0.0376319,0.0649911,0.0586878,0.0352395,0.0430664,0.0305682,0.0230296;0.0203552,0.0686252,0.113096,0.030407,0.0202522,0.0643545,0.0380447,0.134473,0.0496912,0.0179399,0.0589355,0.0689378,0.0578452,0.0441573,1,0.0720556,0.100129,0.0657887,0.108632,0.0993941,0.0729671,0.013073,0.0661432,0.0357784,0.100714,0.0222604,0.0563684,0.0529074,0.135962,0.0828298,0.11285,0.045481,0.0195544,0.0869178,0.0693832,0.111683,0.0485004,0.120271,0.0950101,0.0579973,0.0505992,0.0132323,0.0275161,0.0482231,0.0341257,0.0539209,0.040552,0.0257849,0.0827092,0.0389289,0.0654412,0.0654915,0.104049,0.0683849,0.050106,0.0978966,0.11669,0.0987269,0.11848,0.103095,0.0447477;0.0277455,0.0315053,0.0399101,0.0212993,0.0179576,0.0293347,0.0227346,0.0653016,0.0179546,0.02014,0.0416957,0.0541115,0.0288084,0.0224144,0.0720556,1,0.0436019,0.040964,0.0568821,0.0422937,0.0393406,0.0180418,0.0302696,0.0351198,0.0582056,0.0312631,0.0403611,0.364038,0.0787012,0.0404733,0.0619036,0.0358025,0.0193819,0.0466993,0.076061,0.03761,0.0222634,0.0418325,0.0377202,0.0325505,0.0211284,0.0182803,0.0302851,0.0268145,0.0152082,0.0554579,0.033522,0.0257561,0.047508,0.0305391,0.0501196,0.0356413,0.0546776,0.0419027,0.0385539,0.0479542,0.0686007,0.0530645,0.0421415,0.0648131,0.0318009;0.0249287,0.0541332,0.0873688,0.0329497,0.0218135,0.0616111,0.0399623,0.0938353,0.0411755,0.0169892,0.0573869,0.0663923,0.0525346,0.0412489,0.100129,0.0436019,1,0.0597145,0.0936583,0.110037,0.0568734,0.0165634,0.0684892,0.0359459,0.0991393,0.0200262,0.0568076,0.0343193,0.074722,0.062956,0.0894924,0.0477902,0.0206732,0.0871797,0.0504622,0.0885897,0.0434846,0.106185,0.0982801,0.0555603,0.0442809,0.016777,0.0324322,0.0475077,0.0349036,0.0449758,0.0419438,0.0284526,0.0814257,0.0413323,0.06594,0.0571321,0.0844549,0.0710243,0.0472806,0.0731241,0.0847688,0.0718444,0.0913199,0.0570834,0.0469684;0.0179522,0.0601365,0.0619001,0.0443827,0.0328809,0.0557757,0.0555326,0.0832009,0.0238027,0.0218265,0.079475,0.0680947,0.0547572,0.0457812,0.0657887,0.040964,0.0597145,1,0.092395,0.0553819,0.0572946,0.0126538,0.0688207,0.0349346,0.067164,0.0261843,0.0590347,0.034643,0.0637364,0.0812539,0.0720486,0.0646064,0.0298705,0.0775425,0.0492139,0.0732051,0.0413837,0.0705499,0.0683375,0.0625658,0.0375481,0.0127519,0.032133,0.0417528,0.0340468,0.0441317,0.0654253,0.0358967,0.0925501,0.0452784,0.0547078,0.0612945,0.0692672,0.0484307,0.0603415,0.0686492,0.0797073,0.0610171,0.065504,0.048771,0.02851;0.0205305,0.0868743,0.0864529,0.052911,0.0326853,0.0882203,0.0644805,0.101522,0.0324459,0.0226967,0.0760485,0.0943214,0.0750958,0.0635258,0.108632,0.0568821,0.0936583,0.092395,1,0.0922201,0.0753076,0.0142383,0.0869758,0.0403451,0.108902,0.0262573,0.0807973,0.0462159,0.0876116,0.103693,0.0995402,0.0632946,0.0345414,0.0919571,0.0580482,0.107446,0.0636327,0.109171,0.100551,0.0845125,0.0585648,0.014353,0.0305239,0.0546873,0.0445903,0.0521142,0.0762234,0.0442948,0.124604,0.0659271,0.0640576,0.0725487,0.0957039,0.070505,0.0711656,0.0968466,0.112249,0.0787707,0.091512,0.0641908,0.0410062;0.020523,0.0732761,0.118951,0.037945,0.0237817,0.0720677,0.0460707,0.110152,0.0592762,0.0173746,0.0576978,0.0683407,0.0713008,0.0487894,0.0993941,0.0422937,0.110037,0.0553819,0.0922201,1,0.0592878,0.0138326,0.0821722,0.0359783,0.115093,0.021009,0.0604993,0.0324617,0.0863636,0.071264,0.0892084,0.0497526,0.0227977,0.0848803,0.0529284,0.103607,0.053906,0.114324,0.090059,0.0787642,0.0765458,0.014052,0.0275335,0.0565382,0.0567656,0.0390192,0.0380946,0.0248329,0.086928,0.034034,0.0687551,0.053521,0.0994054,0.0709862,0.0401399,0.0889353,0.106179,0.0721886,0.121784,0.0637184,0.0535039;0.0143299,0.0565831,0.0618834,0.0332594,0.0250419,0.0500271,0.043873,0.0703534,0.0298745,0.0209047,0.0491574,0.0590019,0.0511923,0.0417623,0.0729671,0.0393406,0.0568734,0.0572946,0.0753076,0.0592878,1,0.00992372,0.0571505,0.0330415,0.0668256,0.0237636,0.0521915,0.0324036,0.0617374,0.0600986,0.106832,0.0415719,0.0219675,0.0731606,0.0435883,0.0785228,0.0433564,0.064544,0.0648078,0.0544338,0.0422666,0.0100119,0.0262166,0.0423568,0.0355762,0.0400757,0.0435756,0.0260705,0.0819028,0.0316505,0.0506126,0.0532217,0.0622721,0.0421873,0.0429938,0.0698993,0.0761607,0.0548344,0.0658446,0.049591,0.03013;0.113309,0.00756431,0.00865702,0.00893351,0.0119241,0.00906024,0.00913238,0.014071,0.0060015,0.0137789,0.0170006,0.0196253,0.0105886,0.00690811,0.013073,0.0180418,0.0165634,0.0126538,0.0142383,0.0138326,0.00992372,1,0.00916109,0.022038,0.0197658,0.0188119,0.0155256,0.0191675,0.0155082,0.00926188,0.0170331,0.017859,0.0108707,0.0152041,0.0212602,0.00770439,0.00664052,0.010677,0.00974825,0.0113806,0.00699707,0.831677,0.0233773,0.0102809,0.00647648,0.0216866,0.0144239,0.0143135,0.0148595,0.0139215,0.0228724,0.0130575,0.0152633,0.0153397,0.0129945,0.01245,0.018982,0.0125495,0.00923364,0.0149731,0.0170083;0.0123591,0.165414,0.0571861,0.1136,0.053276,0.188981,0.118729,0.0793658,0.0296246,0.0198131,0.0758347,0.0726661,0.146716,0.143126,0.0661432,0.0302696,0.0684892,0.0688207,0.0869758,0.0821722,0.0571505,0.00916109,1,0.034171,0.086658,0.0190135,0.11327,0.0253991,0.0498218,0.111131,0.0803146,0.0609673,0.0486888,0.0981614,0.0318058,0.0879333,0.100936,0.142863,0.104809,0.171212,0.0895102,0.0092509,0.0326383,0.0840959,0.0619282,0.0339068,0.0665112,0.0531303,0.110443,0.0614038,0.0484048,0.0443192,0.0700165,0.0528557,0.0595751,0.100832,0.0925038,0.0545367,0.0626984,0.0429016,0.0293377;0.0313693,0.0279467,0.02253,0.0357859,0.0387091,0.0320071,0.0336034,0.040857,0.0158598,0.0342198,0.0397207,0.0603477,0.0376131,0.0234841,0.0357784,0.0351198,0.0359459,0.0349346,0.0403451,0.0359783,0.0330415,0.022038,0.034171,1,0.0626657,0.0448008,0.0465185,0.0345899,0.0407716,0.0283408,0.0614761,0.0394086,0.0332418,0.0535853,0.0415132,0.0247914,0.022581,0.0287215,0.0297304,0.0428348,0.0246385,0.0222044,0.0582644,0.0336562,0.0210785,0.0489478,0.0455607,0.0400532,0.0459426,0.0383015,0.0582491,0.0327772,0.0399171,0.0344881,0.0373362,0.0416282,0.0554165,0.0303456,0.0241672,0.0356639,0.0286579;0.029549,0.0813012,0.0742277,0.0574694,0.0395963,0.0908642,0.0599102,0.104609,0.0371106,0.0310558,0.0764869,0.0920776,0.0825505,0.0594128,0.100714,0.0582056,0.0991393,0.067164,0.108902,0.115093,0.0668256,0.0197658,0.086658,0.0626657,1,0.0310635,0.0992664,0.0470664,0.0979005,0.0747141,0.127972,0.0638799,0.0378303,0.113757,0.0626364,0.0810519,0.0559701,0.0969233,0.0868981,0.0889155,0.060438,0.0200128,0.0483598,0.0694405,0.0460844,0.0595104,0.0635429,0.0435719,0.102188,0.0560821,0.0899739,0.0632114,0.104127,0.0738978,0.0611954,0.0975234,0.136785,0.0773371,0.0806171,0.0743306,0.0590487;0.0294889,0.0199139,0.0173652,0.0237087,0.0328562,0.0172531,0.0223252,0.0296928,0.0176575,0.0540288,0.0237472,0.0408941,0.0256936,0.015223,0.0222604,0.0312631,0.0200262,0.0261843,0.0262573,0.021009,0.0237636,0.0188119,0.0190135,0.0448008,0.0310635,1,0.0289427,0.0343528,0.0322611,0.0182101,0.0396309,0.0243431,0.0245274,0.0300931,0.0458825,0.0185275,0.0162717,0.016155,0.0179021,0.0246816,0.018007,0.0188368,0.0442428,0.0202221,0.0203335,0.052463,0.0302533,0.0200625,0.0342174,0.0148224,0.0423125,0.0252957,0.0257995,0.0188593,0.0215349,0.0272641,0.0394236,0.0213574,0.0183498,0.0257344,0.0197679;0.020804,0.0912366,0.0392582,0.0917295,0.0634372,0.123039,0.0933961,0.0592743,0.0223351,0.0296813,0.0727252,0.0798465,0.115902,0.0845804,0.0563684,0.0403611,0.0568076,0.0590347,0.0807973,0.0604993,0.0521915,0.0155256,0.11327,0.0465185,0.0992664,0.0289427,1,0.0375538,0.0515571,0.0721532,0.079206,0.0645132,0.0555651,0.0842078,0.0409335,0.054518,0.0637187,0.0828762,0.0636673,0.119062,0.058946,0.0156096,0.048583,0.074247,0.0460411,0.0439832,0.0688998,0.063361,0.0964577,0.0630216,0.0554707,0.041491,0.066189,0.0512375,0.0624798,0.0890512,0.0886362,0.0460096,0.0430073,0.043963,0.0344868;0.0300767,0.0261084,0.0281557,0.0199221,0.0186418,0.0253305,0.0210828,0.047117,0.0145258,0.0214998,0.0368949,0.0485508,0.0256422,0.0192858,0.0529074,0.364038,0.0343193,0.034643,0.0462159,0.0324617,0.0324036,0.0191675,0.0253991,0.0345899,0.0470664,0.0343528,0.0375538,1,0.0584479,0.0309174,0.0503103,0.0329434,0.0190926,0.0385176,0.0629617,0.0280372,0.018766,0.0314737,0.0294393,0.0283874,0.0175906,0.0193828,0.0327404,0.0229108,0.0132294,0.0552725,0.0314106,0.0249161,0.0413382,0.0274533,0.042365,0.0300198,0.0420506,0.0332657,0.0338755,0.0396294,0.0541365,0.0397118,0.0298365,0.0493432,0.0261537;0.023629,0.0546251,0.100913,0.0282897,0.0203827,0.0464397,0.0327555,0.152167,0.035566,0.021576,0.0572702,0.0690308,0.0474407,0.0356059,0.135962,0.0787012,0.074722,0.0637364,0.0876116,0.0863636,0.0617374,0.0155082,0.0498218,0.0407716,0.0979005,0.0322611,0.0515571,0.0584479,1,0.0771504,0.105239,0.045204,0.0206407,0.0789261,0.0989625,0.0839583,0.0393301,0.0923186,0.0734461,0.0539925,0.0386844,0.0158186,0.0304831,0.040879,0.0277746,0.0669342,0.041413,0.0241266,0.0758237,0.0343558,0.0814367,0.0660254,0.122387,0.0654803,0.0488466,0.0860242,0.135939,0.107997,0.106693,0.102132,0.0451535;0.0124575,0.115869,0.0693841,0.0547073,0.0265796,0.0972388,0.0661203,0.108409,0.0233683,0.0163354,0.0775397,0.0642408,0.0784681,0.0835171,0.0828298,0.0404733,0.062956,0.0812539,0.103693,0.071264,0.0600986,0.00926188,0.111131,0.0283408,0.0747141,0.0182101,0.0721532,0.0309174,0.0771504,1,0.0840558,0.0599379,0.0286192,0.079618,0.0468345,0.108648,0.0658153,0.132264,0.0934642,0.102013,0.0531408,0.00940106,0.0218549,0.0517574,0.0399137,0.034771,0.0473071,0.0331567,0.0934879,0.0482185,0.0509734,0.0479792,0.0980599,0.058365,0.0574715,0.0981741,0.115273,0.0830127,0.0770158,0.0587155,0.029078;0.025074,0.0744724,0.0795782,0.0479199,0.0361239,0.0729227,0.0577082,0.122588,0.0368365,0.0332175,0.0773678,0.0950727,0.0707642,0.0541689,0.11285,0.0619036,0.0894924,0.0720486,0.0995402,0.0892084,0.106832,0.0170331,0.0803146,0.0614761,0.127972,0.0396309,0.079206,0.0503103,0.105239,0.0840558,1,0.0633927,0.0333923,0.125118,0.0697613,0.102028,0.0556514,0.0901725,0.0937909,0.0770327,0.0528727,0.0171788,0.0446902,0.0627417,0.041841,0.0756062,0.062226,0.0389928,0.116611,0.052901,0.0868409,0.0744669,0.115238,0.0735501,0.0685329,0.107305,0.133302,0.0927311,0.0875591,0.0876297,0.050531;0.0221062,0.0472286,0.0338185,0.044575,0.0373542,0.0492991,0.0500844,0.0631856,0.0148742,0.022851,0.210365,0.0676025,0.050373,0.0388204,0.045481,0.0358025,0.0477902,0.0646064,0.0632946,0.0497526,0.0415719,0.017859,0.0609673,0.0394086,0.0638799,0.0243431,0.0645132,0.0329434,0.045204,0.0599379,0.0633927,1,0.0353736,0.0688014,0.039157,0.040831,0.0348975,0.0492245,0.0496026,0.0726134,0.0308474,0.0179551,0.0401314,0.0390193,0.0268256,0.0391383,0.0607959,0.0489497,0.0765508,0.0582863,0.0558329,0.0429377,0.0594411,0.0464793,0.0588217,0.0630239,0.0780825,0.0503571,0.0368846,0.0423989,0.0300636;0.0133523,0.0455204,0.0150099,0.104961,0.0913548,0.0522867,0.065497,0.024555,0.0103449,0.0287095,0.034839,0.0450272,0.0556584,0.0496328,0.0195544,0.0193819,0.0206732,0.0298705,0.0345414,0.0227977,0.0219675,0.0108707,0.0486888,0.0332418,0.0378303,0.0245274,0.0555651,0.0190926,0.0206407,0.0286192,0.0333923,0.0353736,1,0.0347233,0.0214316,0.0185515,0.0318383,0.0232029,0.0226127,0.06875,0.0311863,0.0109068,0.0301814,0.0280218,0.0275907,0.0209527,0.0723028,0.0742129,0.0446741,0.0549972,0.0324434,0.0190445,0.0247964,0.0230284,0.0335268,0.0311979,0.0349731,0.0185598,0.0161808,0.0204673,0.0203227;0.0216031,0.0777474,0.0608411,0.0574852,0.0448953,0.0791091,0.0729107,0.0935243,0.0312711,0.0264769,0.0875045,0.0949476,0.0769215,0.0568641,0.0869178,0.0466993,0.0871797,0.0775425,0.0919571,0.0848803,0.0731606,0.0152041,0.0981614,0.0535853,0.113757,0.0300931,0.0842078,0.0385176,0.0789261,0.079618,0.125118,0.0688014,0.0347233,1,0.0493417,0.0726062,0.0495893,0.0909614,0.0898131,0.0864101,0.0564931,0.0153161,0.0500183,0.0648371,0.0418071,0.0630261,0.0778917,0.0504352,0.112108,0.060133,0.0672302,0.0661886,0.0827305,0.0568621,0.0792217,0.0945266,0.109917,0.0680857,0.0655395,0.0543789,0.0380688;0.0339876,0.0338809,0.0517931,0.0232014,0.0196295,0.0306442,0.0246179,0.0833692,0.0228951,0.0265212,0.0448573,0.0581078,0.0337454,0.0257457,0.0693832,0.076061,0.0504622,0.0492139,0.0580482,0.0529284,0.0435883,0.0212602,0.0318058,0.0415132,0.0626364,0.0458825,0.0409335,0.0629617,0.0989625,0.0468345,0.0697613,0.039157,0.0214316,0.0493417,1,0.045989,0.0280034,0.0490474,0.043006,0.0398539,0.0257127,0.0215076,0.0329018,0.0283731,0.0209007,0.0595293,0.0352951,0.0220485,0.0515902,0.0278387,0.0708981,0.0427638,0.0664662,0.0529169,0.0387017,0.0533947,0.0839548,0.0611029,0.0545146,0.0670584,0.0379405;0.0112186,0.0933401,0.142005,0.035177,0.0198518,0.0789941,0.0497476,0.111952,0.055561,0.0143684,0.0511527,0.0606644,0.0645624,0.062818,0.111683,0.03761,0.0885897,0.0732051,0.107446,0.103607,0.0785228,0.00770439,0.0879333,0.0247914,0.0810519,0.0185275,0.054518,0.0280372,0.0839583,0.108648,0.102028,0.040831,0.0185515,0.0726062,0.045989,1,0.068093,0.135561,0.114312,0.0681475,0.0656408,0.00784142,0.0190931,0.0559184,0.0568679,0.0343709,0.0371137,0.0212791,0.0930407,0.0296264,0.0508632,0.0601473,0.096281,0.0558705,0.0424711,0.0984907,0.0966059,0.0821668,0.146433,0.0646185,0.0328151;0.00916221,0.0988288,0.0475084,0.0643601,0.0319527,0.108184,0.0705408,0.0523511,0.028336,0.0163264,0.0392209,0.0495116,0.102785,0.0976281,0.0485004,0.0222634,0.0434846,0.0413837,0.0636327,0.053906,0.0433564,0.00664052,0.100936,0.022581,0.0559701,0.0162717,0.0637187,0.018766,0.0393301,0.0658153,0.0556514,0.0348975,0.0318383,0.0495893,0.0280034,0.068093,1,0.0803581,0.0650203,0.110521,0.0787449,0.00671054,0.0184487,0.047797,0.0601922,0.0211207,0.0378228,0.0281279,0.0679282,0.0311913,0.0358962,0.0304977,0.0496442,0.0395156,0.032581,0.0660768,0.0608455,0.0363962,0.0510719,0.031471,0.0228111;0.0155531,0.121074,0.112304,0.0477694,0.023331,0.120826,0.0602641,0.126355,0.0384385,0.0149571,0.0624667,0.0692123,0.104283,0.0896563,0.120271,0.0418325,0.106185,0.0705499,0.109171,0.114324,0.064544,0.010677,0.142863,0.0287215,0.0969233,0.016155,0.0828762,0.0314737,0.0923186,0.132264,0.0901725,0.0492245,0.0232029,0.0909614,0.0490474,0.135561,0.0803581,1,0.130449,0.10071,0.0766779,0.0108451,0.0256301,0.0725452,0.0490026,0.0364288,0.0404815,0.0288831,0.101126,0.0433899,0.056522,0.0516205,0.0984118,0.0791168,0.0550925,0.119651,0.120075,0.0841528,0.120768,0.0627921,0.0362977;0.0144371,0.0873949,0.100768,0.0428002,0.024849,0.089285,0.0584315,0.108911,0.0336583,0.0155239,0.0642036,0.063008,0.0657295,0.0642066,0.0950101,0.0377202,0.0982801,0.0683375,0.100551,0.090059,0.0648078,0.00974825,0.104809,0.0297304,0.0868981,0.0179021,0.0636673,0.0294393,0.0734461,0.0934642,0.0937909,0.0496026,0.0226127,0.0898131,0.043006,0.114312,0.0650203,0.130449,1,0.0790904,0.0559255,0.00990005,0.0256356,0.055521,0.045059,0.0371579,0.0458846,0.0286134,0.104016,0.0421189,0.0553726,0.0575058,0.10339,0.0599719,0.0533026,0.101341,0.100464,0.090784,0.110345,0.054605,0.0353188;0.0144809,0.153669,0.0546263,0.139248,0.0655789,0.158883,0.131154,0.082547,0.0291061,0.0250605,0.0759707,0.0922088,0.191955,0.130853,0.0579973,0.0325505,0.0555603,0.0625658,0.0845125,0.0787642,0.0544338,0.0113806,0.171212,0.0428348,0.0889155,0.0246816,0.119062,0.0283874,0.0539925,0.102013,0.0770327,0.0726134,0.06875,0.0864101,0.0398539,0.0681475,0.110521,0.10071,0.0790904,1,0.137882,0.0114931,0.0341658,0.0717253,0.0795506,0.0312505,0.0707774,0.0568472,0.111504,0.0583253,0.0657398,0.0395332,0.0733809,0.0556738,0.0557675,0.103383,0.105781,0.0537833,0.0591692,0.0438686,0.0367236;0.00970853,0.105537,0.061198,0.0655726,0.0351699,0.0994279,0.0753354,0.0549974,0.0564407,0.0172895,0.0325836,0.0558188,0.143067,0.0781336,0.0505992,0.0211284,0.0442809,0.0375481,0.0585648,0.0765458,0.0422666,0.00699707,0.0895102,0.0246385,0.060438,0.018007,0.058946,0.0175906,0.0386844,0.0531408,0.0528727,0.0308474,0.0311863,0.0564931,0.0257127,0.0656408,0.0787449,0.0766779,0.0559255,0.137882,1,0.00705029,0.0179627,0.0539851,0.128682,0.0197997,0.035625,0.0237753,0.0715874,0.0234204,0.0389588,0.0307947,0.047017,0.0369892,0.0261721,0.0734519,0.0595568,0.032804,0.061977,0.030913,0.0326178;0.114564,0.00765342,0.00882495,0.00897286,0.0118696,0.00916484,0.00918086,0.0142638,0.00606363,0.0137252,0.0171078,0.0197821,0.0106602,0.00697307,0.0132323,0.0182803,0.016777,0.0127519,0.014353,0.014052,0.0100119,0.831677,0.0092509,0.0222044,0.0200128,0.0188368,0.0156096,0.0193828,0.0158186,0.00940106,0.0171788,0.0179551,0.0109068,0.0153161,0.0215076,0.00784142,0.00671054,0.0108451,0.00990005,0.0114931,0.00705029,1,0.0233826,0.0104083,0.00652319,0.0217449,0.01442,0.0143282,0.0149975,0.0140465,0.0231512,0.0132059,0.0155758,0.0156377,0.013075,0.0126078,0.0191726,0.012769,0.00941872,0.0151637,0.0172852;0.035652,0.0238705,0.0179619,0.0337297,0.0424319,0.0272692,0.0309771,0.0312694,0.0146823,0.0365651,0.0417993,0.0486559,0.0344462,0.0206941,0.0275161,0.0302851,0.0324322,0.032133,0.0305239,0.0275335,0.0262166,0.0233773,0.0326383,0.0582644,0.0483598,0.0442428,0.048583,0.0327404,0.0304831,0.0218549,0.0446902,0.0401314,0.0301814,0.0500183,0.0329018,0.0190931,0.0184487,0.0256301,0.0256356,0.0341658,0.0179627,0.0233826,1,0.0331586,0.0178352,0.0627983,0.0428899,0.0401412,0.0402003,0.0311815,0.0494373,0.028835,0.0284747,0.0255149,0.0356078,0.0343674,0.0433472,0.0238299,0.0192971,0.0271896,0.0223978;0.0145464,0.0653754,0.0430097,0.047318,0.0325723,0.079427,0.0586722,0.0511638,0.0275483,0.0182028,0.0443817,0.0547948,0.0834051,0.0569477,0.0482231,0.0268145,0.0475077,0.0417528,0.0546873,0.0565382,0.0423568,0.0102809,0.0840959,0.0336562,0.0694405,0.0202221,0.074247,0.0229108,0.040879,0.0517574,0.0627417,0.0390193,0.0280218,0.0648371,0.0283731,0.0559184,0.047797,0.0725452,0.055521,0.0717253,0.0539851,0.0104083,0.0331586,1,0.0495276,0.0299599,0.0379629,0.0303393,0.071845,0.0323533,0.0412934,0.0367677,0.0491385,0.0379609,0.0366182,0.0664749,0.0651518,0.0362268,0.0460603,0.0321749,0.0251062;0.00904024,0.0779494,0.0507675,0.0514485,0.0338602,0.0666114,0.065506,0.0387675,0.0606964,0.0174307,0.0266472,0.041997,0.0962422,0.0568724,0.0341257,0.0152082,0.0349036,0.0340468,0.0445903,0.0567656,0.0355762,0.00647648,0.0619282,0.0210785,0.0460844,0.0203335,0.0460411,0.0132294,0.0277746,0.0399137,0.041841,0.0268256,0.0275907,0.0418071,0.0209007,0.0568679,0.0601922,0.0490026,0.045059,0.0795506,0.128682,0.00652319,0.0178352,0.0495276,1,0.0178114,0.0296088,0.0181681,0.0604987,0.0168366,0.0328378,0.0281161,0.0352516,0.027172,0.0201912,0.0498841,0.0429046,0.0238443,0.0511303,0.0228789,0.0264275;0.0336249,0.0295298,0.0313114,0.0237462,0.0238705,0.0274789,0.0264851,0.0513533,0.0194773,0.0353393,0.0518744,0.0553208,0.0291341,0.0203937,0.0539209,0.0554579,0.0449758,0.0441317,0.0521142,0.0390192,0.0400757,0.0216866,0.0339068,0.0489478,0.0595104,0.052463,0.0439832,0.0552725,0.0669342,0.034771,0.0756062,0.0391383,0.0209527,0.0630261,0.0595293,0.0343709,0.0211207,0.0364288,0.0371579,0.0312505,0.0197997,0.0217449,0.0627983,0.0299599,0.0178114,1,0.0423581,0.0266043,0.0547291,0.0295909,0.0559739,0.048671,0.0473841,0.0334181,0.0438965,0.0479413,0.0654467,0.0433819,0.0338432,0.0490237,0.0281624;0.0181413,0.0513703,0.0286855,0.0777804,0.0697783,0.0609454,0.0717745,0.0450369,0.0148453,0.0329407,0.0699797,0.0777118,0.056946,0.0487236,0.040552,0.033522,0.0419438,0.0654253,0.0762234,0.0380946,0.0435756,0.0144239,0.0665112,0.0455607,0.0635429,0.0302533,0.0688998,0.0314106,0.041413,0.0473071,0.062226,0.0607959,0.0723028,0.0778917,0.0352951,0.0371137,0.0378228,0.0404815,0.0458846,0.0707774,0.035625,0.01442,0.0428899,0.0379629,0.0296088,0.0423581,1,0.0894004,0.0880578,0.0860019,0.0475838,0.0423778,0.0443258,0.0363194,0.0701271,0.05168,0.0586561,0.0363122,0.0311876,0.0345386,0.0273123;0.0168367,0.0370085,0.0154512,0.0736204,0.0783719,0.0515209,0.0626677,0.0279192,0.00886842,0.0246501,0.0529628,0.0539761,0.0461817,0.0427773,0.0257849,0.0257561,0.0284526,0.0358967,0.0442948,0.0248329,0.0260705,0.0143135,0.0531303,0.0400532,0.0435719,0.0200625,0.063361,0.0249161,0.0241266,0.0331567,0.0389928,0.0489497,0.0742129,0.0504352,0.0220485,0.0212791,0.0281279,0.0288831,0.0286134,0.0568472,0.0237753,0.0143282,0.0401412,0.0303393,0.0181681,0.0266043,0.0894004,1,0.0482699,0.105111,0.0323982,0.0248964,0.02827,0.0282716,0.0535345,0.0357139,0.0374644,0.0238469,0.0168676,0.025395,0.0210628;0.0210589,0.102424,0.0761644,0.0694533,0.04832,0.0919604,0.0919617,0.0933818,0.0312879,0.0311806,0.0890574,0.102802,0.098896,0.0801491,0.0827092,0.047508,0.0814257,0.0925501,0.124604,0.086928,0.0819028,0.0148595,0.110443,0.0459426,0.102188,0.0342174,0.0964577,0.0413382,0.0758237,0.0934879,0.116611,0.0765508,0.0446741,0.112108,0.0515902,0.0930407,0.0679282,0.101126,0.104016,0.111504,0.0715874,0.0149975,0.0402003,0.071845,0.0604987,0.0547291,0.0880578,0.0482699,1,0.0553062,0.0688445,0.0701698,0.0889893,0.0587028,0.0709832,0.106622,0.123952,0.0700501,0.0822935,0.0562224,0.0420405;0.0169059,0.0407812,0.0216821,0.0582391,0.0438018,0.0612251,0.0532484,0.0378192,0.00886844,0.0185101,0.0701876,0.0565408,0.0417778,0.042913,0.0389289,0.0305391,0.0413323,0.0452784,0.0659271,0.034034,0.0316505,0.0139215,0.0614038,0.0383015,0.0560821,0.0148224,0.0630216,0.0274533,0.0343558,0.0482185,0.052901,0.0582863,0.0549972,0.060133,0.0278387,0.0296264,0.0311913,0.0433899,0.0421189,0.0583253,0.0234204,0.0140465,0.0311815,0.0323533,0.0168366,0.0295909,0.0860019,0.105111,0.0553062,1,0.0350129,0.0325734,0.0414369,0.0399057,0.0766741,0.0479104,0.0482955,0.0373137,0.0238228,0.0321857,0.0246669;0.03133,0.0434001,0.0625971,0.037847,0.0335016,0.0434846,0.0392321,0.118155,0.0309692,0.0285046,0.0590432,0.072538,0.051641,0.0332365,0.0654412,0.0501196,0.06594,0.0547078,0.0640576,0.0687551,0.0506126,0.0228724,0.0484048,0.0582491,0.0899739,0.0423125,0.0554707,0.042365,0.0814367,0.0509734,0.0868409,0.0558329,0.0324434,0.0672302,0.0708981,0.0508632,0.0358962,0.056522,0.0553726,0.0657398,0.0389588,0.0231512,0.0494373,0.0412934,0.0328378,0.0559739,0.0475838,0.0323982,0.0688445,0.0350129,1,0.0501316,0.0838786,0.064021,0.0427425,0.0702922,0.11607,0.0749717,0.0672372,0.0671556,0.0511103;0.0186357,0.0405279,0.0594582,0.0256053,0.0212387,0.0358524,0.0344205,0.0654505,0.0310336,0.0189727,0.0521852,0.0566369,0.0358798,0.0273728,0.0654915,0.0356413,0.0571321,0.0612945,0.0725487,0.053521,0.0532217,0.0130575,0.0443192,0.0327772,0.0632114,0.0252957,0.041491,0.0300198,0.0660254,0.0479792,0.0744669,0.0429377,0.0190445,0.0661886,0.0427638,0.0601473,0.0304977,0.0516205,0.0575058,0.0395332,0.0307947,0.0132059,0.028835,0.0367677,0.0281161,0.048671,0.0423778,0.0248964,0.0701698,0.0325734,0.0501316,1,0.0592559,0.0403162,0.0422842,0.05469,0.066262,0.0522362,0.0622925,0.0496197,0.0279511;0.0212059,0.0679574,0.103766,0.0365783,0.0245689,0.0662057,0.0441984,0.156534,0.0307048,0.0195005,0.0722976,0.0649669,0.059221,0.0478024,0.104049,0.0546776,0.0844549,0.0692672,0.0957039,0.0994054,0.0622721,0.0152633,0.0700165,0.0399171,0.104127,0.0257995,0.066189,0.0420506,0.122387,0.0980599,0.115238,0.0594411,0.0247964,0.0827305,0.0664662,0.096281,0.0496442,0.0984118,0.10339,0.0733809,0.047017,0.0155758,0.0284747,0.0491385,0.0352516,0.0473841,0.0443258,0.02827,0.0889893,0.0414369,0.0838786,0.0592559,1,0.0759488,0.0509133,0.103109,0.152673,0.122588,0.115444,0.0843379,0.0519178;0.0213519,0.0513194,0.0581383,0.0310638,0.0209343,0.0522407,0.0345669,0.0833176,0.0219838,0.016757,0.0530644,0.0559231,0.0473631,0.0404096,0.0683849,0.0419027,0.0710243,0.0484307,0.070505,0.0709862,0.0421873,0.0153397,0.0528557,0.0344881,0.0738978,0.0188593,0.0512375,0.0332657,0.0654803,0.058365,0.0735501,0.0464793,0.0230284,0.0568621,0.0529169,0.0558705,0.0395156,0.0791168,0.0599719,0.0556738,0.0369892,0.0156377,0.0255149,0.0379609,0.027172,0.0334181,0.0363194,0.0282716,0.0587028,0.0399057,0.064021,0.0403162,0.0759488,1,0.0417117,0.062434,0.078816,0.061711,0.0631591,0.0556437,0.0441055;0.0166733,0.0428353,0.0310508,0.0439906,0.0315106,0.0509706,0.0462611,0.0528569,0.0125012,0.0203173,0.0734523,0.0674234,0.0434188,0.0376319,0.050106,0.0385539,0.0472806,0.0603415,0.0711656,0.0401399,0.0429938,0.0129945,0.0595751,0.0373362,0.0611954,0.0215349,0.0624798,0.0338755,0.0488466,0.0574715,0.0685329,0.0588217,0.0335268,0.0792217,0.0387017,0.0424711,0.032581,0.0550925,0.0533026,0.0557675,0.0261721,0.013075,0.0356078,0.0366182,0.0201912,0.0438965,0.0701271,0.0535345,0.0709832,0.0766741,0.0427425,0.0422842,0.0509133,0.0417117,1,0.0555574,0.0645378,0.0470205,0.0336806,0.0383966,0.0223476;0.0177337,0.0942064,0.0850086,0.0552713,0.0344046,0.0893174,0.0644259,0.116089,0.0359743,0.0230363,0.0763628,0.0777699,0.0916772,0.0649911,0.0978966,0.0479542,0.0731241,0.0686492,0.0968466,0.0889353,0.0698993,0.01245,0.100832,0.0416282,0.0975234,0.0272641,0.0890512,0.0396294,0.0860242,0.0981741,0.107305,0.0630239,0.0311979,0.0945266,0.0533947,0.0984907,0.0660768,0.119651,0.101341,0.103383,0.0734519,0.0126078,0.0343674,0.0664749,0.0498841,0.0479413,0.05168,0.0357139,0.106622,0.0479104,0.0702922,0.05469,0.103109,0.062434,0.0555574,1,0.142049,0.080139,0.0926136,0.0667941,0.0381132;0.026178,0.0828343,0.0950167,0.0522958,0.036149,0.0784159,0.0591432,0.213752,0.0349112,0.0275338,0.0907935,0.0944129,0.0879908,0.0586878,0.11669,0.0686007,0.0847688,0.0797073,0.112249,0.106179,0.0761607,0.018982,0.0925038,0.0554165,0.136785,0.0394236,0.0886362,0.0541365,0.135939,0.115273,0.133302,0.0780825,0.0349731,0.109917,0.0839548,0.0966059,0.0608455,0.120075,0.100464,0.105781,0.0595568,0.0191726,0.0433472,0.0651518,0.0429046,0.0654467,0.0586561,0.0374644,0.123952,0.0482955,0.11607,0.066262,0.152673,0.078816,0.0645378,0.142049,1,0.123827,0.105236,0.0971174,0.0484487;0.0180057,0.0503716,0.0882648,0.0274995,0.0184933,0.0452223,0.0323764,0.174258,0.0256949,0.0158816,0.0635869,0.0566721,0.0431318,0.0352395,0.0987269,0.0530645,0.0718444,0.0610171,0.0787707,0.0721886,0.0548344,0.0125495,0.0545367,0.0303456,0.0773371,0.0213574,0.0460096,0.0397118,0.107997,0.0830127,0.0927311,0.0503571,0.0185598,0.0680857,0.0611029,0.0821668,0.0363962,0.0841528,0.090784,0.0537833,0.032804,0.012769,0.0238299,0.0362268,0.0238443,0.0433819,0.0363122,0.0238469,0.0700501,0.0373137,0.0749717,0.0522362,0.122588,0.061711,0.0470205,0.080139,0.123827,1,0.0960401,0.0826711,0.0411032;0.0136806,0.0657574,0.688407,0.0266884,0.0165715,0.0543503,0.0364875,0.155479,0.0670824,0.0135006,0.0451682,0.0514531,0.0557159,0.0430664,0.11848,0.0421415,0.0913199,0.065504,0.091512,0.121784,0.0658446,0.00923364,0.0626984,0.0241672,0.0806171,0.0183498,0.0430073,0.0298365,0.106693,0.0770158,0.0875591,0.0368846,0.0161808,0.0655395,0.0545146,0.146433,0.0510719,0.120768,0.110345,0.0591692,0.061977,0.00941872,0.0192971,0.0460603,0.0511303,0.0338432,0.0311876,0.0168676,0.0822935,0.0238228,0.0672372,0.0622925,0.115444,0.0631591,0.0336806,0.0926136,0.105236,0.0960401,1,0.0679254,0.0464113;0.0218217,0.0447288,0.0635133,0.0258631,0.0202248,0.0385959,0.0288318,0.105418,0.0273236,0.0200527,0.0524839,0.0537001,0.039823,0.0305682,0.103095,0.0648131,0.0570834,0.048771,0.0641908,0.0637184,0.049591,0.0149731,0.0429016,0.0356639,0.0743306,0.0257344,0.043963,0.0493432,0.102132,0.0587155,0.0876297,0.0423989,0.0204673,0.0543789,0.0670584,0.0646185,0.031471,0.0627921,0.054605,0.0438686,0.030913,0.0151637,0.0271896,0.0321749,0.0228789,0.0490237,0.0345386,0.025395,0.0562224,0.0321857,0.0671556,0.0496197,0.0843379,0.0556437,0.0383966,0.0667941,0.0971174,0.0826711,0.0679254,1,0.0430025;0.0251366,0.0307952,0.0443579,0.0224713,0.0194178,0.0293096,0.0238579,0.0542011,0.0260226,0.0200399,0.0333395,0.0389475,0.0343281,0.0230296,0.0447477,0.0318009,0.0469684,0.02851,0.0410062,0.0535039,0.03013,0.0170083,0.0293377,0.0286579,0.0590487,0.0197679,0.0344868,0.0261537,0.0451535,0.029078,0.050531,0.0300636,0.0203227,0.0380688,0.0379405,0.0328151,0.0228111,0.0362977,0.0353188,0.0367236,0.0326178,0.0172852,0.0223978,0.0251062,0.0264275,0.0281624,0.0273123,0.0210628,0.0420405,0.0246669,0.0511103,0.0279511,0.0519178,0.0441055,0.0223476,0.0381132,0.0484487,0.0411032,0.0464113,0.0430025,1];


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%helloworld(1,23,34)
%Adj = createAdjMatrix("../MinCut/train_sorted.c2");
%Adj = createAdjMatrix("pulsar_sorted.c2");
Adj = createAdjMatrix(c2file,NDIM);
m = size(Adj,1);
for i = 1:m
	ID(i) = i;
endfor;

[cutstrength,p1,p2] = ncut(Adj,Adj,ID,0);
sz = size(clusters,2);
for i = 1:sz
	p = cell2mat(clusters(1,i));
	sval(i) = clstrength(Adj,p);
	printf('Partition %d ==> ID : %d\n',i,cell2mat(heapordering(1,i)));
	p 
	printf('Partition %d strength : %f\n\n',i,sval(i));
endfor

title = sprintf('Clusters for %s <i><font size="1">( CLUSTERSTRENGTH_THRESHOLD = %f, MERGE_THRESHOLD = %f, SPLITRATIO_THRESHOLD = %f, MINCLUSTERSIZE = %d, MAXCLUSTERSIZE = %d, CUTSTRENGTH_THRESHOLD = %f )</font></i>',query, CLUSTERSTRENGTH_THRESHOLD, MERGE_THRESHOLD, SPLITRATIO_THRESHOLD, MINCLUSTERSIZE, MAXCLUSTERSIZE, CUTSTRENGTH_THRESHOLD);
beforemerge = [ query, '_beforemerge' ];
display(keyfile,beforemerge,title,clusters,sval,heapordering);

%% After merge
clusters2 = {};
clusters2 = merge(Adj,clusters,heapordering);
clusters2
ss = size(clusters2,2);
for i = 1:ss
	p2 = cell2mat(clusters2(1,i));
	sval2(i) = clstrength(Adj,p2);
	printf('Partition %d ==> ID : %d\n',i,cell2mat(heapordering(1,i)));
	p2 
	printf('Partition %d strength : %f\n\n',i,sval2(i));
endfor

display(keyfile,query,title,clusters2,sval2,heapordering);


%%[X,Mu] = getClusterParams(c2file,clusters,NDIM);
%%NumClusters = size(clusters,2)
%%
%%Sigma = {};
%%SigmaInv = {};
%%for i = 1:NumClusters
%%	B = cell2mat(X(i));
%%	s = size(B,2)	
%%	A = []; 	
%%	for j = 1:NDIM
%%		for k = 1:s
%%			A(j,k) = B(j,k);   
%%		endfor
%%	endfor
%%
%%	Sigma(i) = cov(A');
%%	SigmaInv(i) = inv(cell2mat(Sigma(i)));
%%endfor
%%
%%for i = 1:NumClusters
%%	for j = 1:i-1
%%	k1 = cell2mat(Mu(i))' * cell2mat(SigmaInv(j)) * cell2mat(Mu(i)) +  cell2mat(Mu(j))' * cell2mat(SigmaInv(j)) * cell2mat(Mu(j))  -  2 *  cell2mat(Mu(i))' * cell2mat(SigmaInv(j)) * cell2mat(Mu(j))
%%	k1
%%	endfor
%%endfor
%%	

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Uncomment for code of interactive clustering
%while(true)
%
%uchoice = menu("Partitioning Options","Further partition partition-1","Futher partition partition-2","I am done ..Quit !!");
%
%switch(uchoice)
%	case 1
%		part = p1;
%	case 2
%		part = p2;
%	case 3
%		printf("\n\nFinal configuration is : \n");
%		break;
%	otherwise
%		printf("Invalid choice !!!");
%endswitch;
%
%		M = selector(W,part)
%		[p1,p2] = ncut(M,part,20)
%
%endwhile;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


